package com.haixinga.kits;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author terrfly
 * @Date 2019/6/2 11:47
 * @Description 时间转换常用工具集
 **/
public class DateKit {

    /** 常用格式化类型 **/
    public static final String FORMAT_DEFAULT = "yyyy-MM-dd HH:mm:ss"; //默认格式
    public static final String FORMAT_DEFAULT_COMPRESS = "yyyyMMddHHmmss"; //默认格式压缩形式
    public static final String FORMAT_DATE = "yyyy-MM-dd"; //日期
    public static final String FORMAT_TIME_24H = "HH:mm:ss"; //时间 24小时制
    public static final String FORMAT_TIME_12H = "hh:mm:ss"; //时间 12小时制

    /** 获取当前时间戳, 13位格式 **/
    public static long getNowTimestamp() {
        return new Date().getTime();
    }

    /** 获取当前时间戳, 指定位数所需位数, 如所需10位则后面直接舍去, 若位数小于等于0 || 大于13位 返回13位时间戳 **/
    public static long getNowTimestamp(int length) {

        if(length <= 0 || length > 13) return getNowTimestamp();
        return (long) (new Date().getTime() / Math.pow(10, (13-length)));
    }


    /** 字符串转换为时间，指定格式 **/
    public static Date str2Date(String dateStr, String format) throws ParseException {

        if(ObjKit.isContainNull(dateStr, format)) return null; //如果参数为空 返回null
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.parse(dateStr);
    }

    /** str2Date方法重载, 默认时间格式 **/
    public static Date str2Date(String dateStr) throws ParseException{
        return str2Date(dateStr, FORMAT_DEFAULT);
    }


    /** 时间转换为字符串, 指定格式  **/
    public static String date2Str(Date date, String format) {

        if(ObjKit.isContainNull(date, format)) return null; //如果参数为空 返回null
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);

    }

    /** date2Str方法重载, 默认时间格式  **/
    public static String date2Str(Date date) {
        return date2Str(date, FORMAT_DEFAULT);
    }

    /** 获取当前时间字符串, 指定格式  **/
    public static String getNowStr(String format) {
        return date2Str(new Date(), format);
    }

    /** getNowStr方法重载, 默认时间格式 **/
    public static String getNowStr() {
        return date2Str(new Date(), FORMAT_DEFAULT);
    }

    /** 日期字符串类型 相互转换 **/
    public static String dateStrConvert(String dateStr, String originFormat, String needFormat) throws ParseException {
        return date2Str(str2Date(dateStr, originFormat), needFormat);
    }



}
